HarmonyOS-鸿蒙app开发 —基于java_服务卡片开发指导_服务卡片开发简介

HarmonyOS-鸿蒙app开发 —基于java_服务卡片开发指导_服务卡片开发简介

场景介绍

开发者仅需作为卡片提供方进行服务卡片内容的开发,卡片使用方和卡片代理服务由系统自动处理。

卡片提供方控制卡片实际显示的内容、控件布局以及控件点击事件。开发者可以通过集成以下接口来提供卡片服务。

Java服务卡片的底层逻辑处理均通过Java接口实现,在卡片的UI实现层面,可通过Java UI或JS UI来实现。

接口说明

HarmonyOS中的服务卡片为卡片提供方开发者提供以下接口能力。

表1 卡片提供方接口功能介绍

类名

接口名

描述

Ability

ProviderFormInfo onCreateForm(Intent intent)

卡片提供方接收创建卡片通知接口。

void onUpdateForm(long formId)

卡片提供方接收更新卡片通知接口。

void onDeleteForm(long formId)

卡片提供方接收删除卡片通知接口。

void onTriggerFormEvent(long formId, String message)

卡片提供方处理卡片事件接口(JS UI的卡片使用)。

boolean updateForm(long formId, ComponentProvider component)

卡片提供方主动更新卡片(Java UI的卡片使用)。

boolean updateForm(long formId, FormBindingData formBindingData)

卡片提供方主动更新卡片(JS UI的卡片使用),仅更新formBindingData中携带的信息,卡片中其余信息保持不变。

void onCastTempForm(long formId)

卡片提供方接收临时卡片转常态卡片通知(预留接口,当前版本无触发场景,不会回调)。

void onEventNotify(Map<Long, Integer> formEvents)

卡片提供方接收到事件通知,其中Ability.FORM_VISIBLE表示卡片可见通知,

Ability.FORM_INVISIBLE表示卡片不可见通知。

FormState onAcquireFormState(Intent intent)

卡片提供方接收查询卡片状态通知接口。默认返回卡片初始状态。

ProviderFormInfo

ProviderFormInfo(int resId, Context context)

Java UI的卡片返回对象构造函数。

ProviderFormInfo()

JS UI的卡片返回对象构造函数。

void mergeActions(ComponentProvider componentProviderActions)

在提供方侧调用该接口,将开发者在ComponentProvider中设置的actions配置数据合并到当前对象中。

void setJsBindingData(FormBindingData data)

设置JS UI的卡片的内容信息(JS UI的卡片使用)。

其中,onEventNotify仅系统应用才会回调,其他接口回调时机如下图:

说明

卡片管理服务不负责保持卡片的活跃状态(设置了定时更新的除外),当使用方作出相应的请求时,管理服务会拉起提供方并回调相应接口。

使用Java或JS实现卡片UI的选型指导

使用Java或JS实现卡片UI在场景能力上的差异如下表所示:

场景

Java UI的卡片

JS UI的卡片

支持的版本

实时刷新(类似时钟)

Java使用ComponentProvider做实时刷新代价比较大

JS可以做到端侧刷新,但是需要定制化组件

HarmonyOS 2.0及以上

开发方式

Java UI在卡片提供方需要同时对数据和组件进行处理,生成ComponentProvider远端渲染

JS卡片在使用方加载渲染,提供方只要处理数据、组件和逻辑分离

HarmonyOS 2.0及以上

组件支持

Text、Image、DirectionalLayout、PositionLayout、DependentLayout

div、list、list-item、swiper、

stack、image、text、span、progress、button(定制:chart 、clock、calendar)

HarmonyOS 2.0及以上

卡片内动效

不支持

暂不开放

HarmonyOS 2.0及以上

阴影模糊

不支持

支持

HarmonyOS 2.0及以上

动态适应布局

不支持

支持

HarmonyOS 2.0及以上

自定义卡片跳转页面

不支持

支持

HarmonyOS 2.0及以上

综上所述,Java卡片使用JS UI比使用Java UI所支持的控件和能力都更丰富,因此:

  • Java UI的卡片:适合作为一个直达入口,没有复杂的页面和事件。
  • JS UI的卡片:适合有复杂界面的卡片。

约束与限制

对于同一个Page ability,在config.json中最多支持配置16张卡片。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x